package cn.liulingfengyu.behavioralpatterns.observerpattern;

/**
 * 观察者模式示例
 */
public class ObserverPatternDemo {
    public static void main(String[] args) {
        // 创建具体主题
        ConcreteSubject subject = new ConcreteSubject();

        // 创建观察者
        Observer observer1 = new ConcreteObserver("观察者A");
        Observer observer2 = new ConcreteObserver("观察者B");

        // 注册观察者
        subject.registerObserver(observer1);
        subject.registerObserver(observer2);

        // 设置主题状态并通知观察者
        subject.setState("状态1");

        // 移除一个观察者
        subject.removeObserver(observer1);

        // 再次设置主题状态并通知观察者
        subject.setState("状态2");
    }
}